Some additional auto-mnemonic fixes
authorMatthias Clasen <mclasen@redhat.com>
Fri, 6 May 2011 18:04:50 +0000 (14:04 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 6 May 2011 18:10:23 +0000 (14:10 -0400)
Previously, we would also show mnemonics if the user hits
Ctrl+Alt, even though Ctrl+Alt+<x> does not actually trigger.

gtk/gtkmain.c
gtk/gtkwindow.c

index 9eda5a9f4135bbc99da7a3c3ea3df1bebc81fe54..950c4995d9b17c06df7cf3f7fd624a833ed1eea7 100644 (file)
@@ -1840,10 +1840,13 @@ gtk_main_do_event (GdkEvent *event)
           if (gtk_invoke_key_snoopers (grab_widget, event))
             break;
         }
+
       /* Catch alt press to enable auto-mnemonics;
        * menus are handled elsewhere
+       * FIXME: this does not work with mnemonic modifiers other than Alt
        */
       if ((event->key.keyval == GDK_KEY_Alt_L || event->key.keyval == GDK_KEY_Alt_R) &&
+          ((event->key.state & (gtk_accelerator_get_default_mod_mask ()) & ~(GDK_RELEASE_MASK|GDK_MOD1_MASK)) == 0) &&
           !GTK_IS_MENU_SHELL (grab_widget))
         {
           gboolean auto_mnemonics;
index 04cf5c9ad4cf468971fbaa3fe0d41117d2969b4b..2af5409bdd98c70d67c4d37281d7e9ee386285c1 100644 (file)
@@ -5947,8 +5947,7 @@ maybe_set_mnemonics_visible (GtkWindow *window)
 
           gdk_device_get_state (dev, gtk_widget_get_window (GTK_WIDGET (window)),
                                 NULL, &mask);
-
-          if (window->priv->mnemonic_modifier & mask)
+          if (window->priv->mnemonic_modifier == (mask & gtk_accelerator_get_default_mod_mask ()))
             {
               gtk_window_set_mnemonics_visible (window, TRUE);
               break;